//
// Created by 下次一定 on 2021/9/7.
// 进行n次操作  插入 或删除
// 询问一个字符串在集合中出现多少次
//


#include<iostream>
using namespace std;


const int N = 100010;
char str[N];

//每个结点最多连26   cnt 以当前结尾的单词有多少个  inx 下标是0的点  即是根节点 又是空节点
int son[N][26], cnt[N],idx;

void insert(char str[]){
    int p = 0;
    for( int i = 0;str[i];i++){
        int u = str[i] - 'a';
        if(!son[p][u]) son[p][u] = ++ idx;
        p = son[p][u];
    }
    cnt[p]++;
}

int query(char str[]){
    int p = 0;
    for(int i = 0 ;str[i];i++){
        int u = str[i] - 'a';
        if(!son[p][u]) return 0;
        p = son[p][u];
    }
    return cnt[p];
}

int main(){
    int n;
    cin>>n;

    while(n--){
        char op[2];
        cin>>op>>str;
        if(op[0] == 'I') insert(str);
        else cout<< query(str);
    }
    return 0;
}